import java.util.Arrays;

public class AssignCookies {
    /*
    * 455. 分发饼干
    * 假设你是一位很棒的家长，想要给你的孩子们一些小饼干。但是，每个孩子最多只能给一块饼干。
    * 对每个孩子 i，都有一个胃口值 g[i]，这是能让孩子们满足胃口的饼干的最小尺寸；
    * 并且每块饼干 j，都有一个尺寸 s[j] 。
    * 如果 s[j] >= g[i]，我们可以将这个饼干 j 分配给孩子 i ，这个孩子会得到满足。
    * 你的目标是尽可能满足越多数量的孩子，并输出这个最大数值。
    *
    * 1 <= g.length <= 3 * 10^4
    * 0 <= s.length <= 3 * 10^4
    * 1 <= g[i], s[j] <= 2^31 - 1
    * */
    public static void main(String[] args){

    }

    // 我的想法：将孩子胃口值和饼干尺寸都从小到大排序
    // 然后用小饼干喂饱小胃口，依次增大
    public int mySolution(int[] g, int[] s){
        int res = 0;
        Arrays.sort(g);
        Arrays.sort(s);
        int gIndex = 0;
        for (int i = 0; i < s.length && gIndex < g.length; i++) {
            while (i < s.length && g[gIndex] > s[i]){
                i++;
            }
            if(i >= s.length){
                break;
            }
            res++;
            gIndex++;
        }
        return res;
    }

    // 当然，也可以先用大的喂饱大胃口
}